package logika;

/* Soubor je ulozen v kodovani UTF-8.
 * Kontrola kódování: Příliš žluťoučký kůň úpěl ďábelské ódy. */

/*******************************************************************************
 * tento příkaz slouží k opravě věcí.
 *
 * @author    Tomáš Koválik
 * @version   1.0
 */
public class PrikazOprav implements IPrikaz
{
    //== Datové atributy (statické i instancí)======================================
    private static final String NAZEV = "oprav";
    private HerniPlan plan;

    //== Konstruktory a tovární metody =============================================

    /***************************************************************************
     *  Konstruktor ....
     */
    public PrikazOprav(HerniPlan plan)
    {
        this.plan = plan;
    }

    //== Nesoukromé metody (instancí i třídy) ======================================
    /**
     *  Metoda pro provedení příkazu ve hře.
     *  Počet parametrů je závislý na konkrétním příkazu,
     *  např. příkazy konec a napoveda nemají parametry
     *  příkazy jdi, seber, polož mají jeden parametr
     *  příkaz pouzij může mít dva parametry.
     *  
     *  @param parametry počet parametrů závisí na konkrétním příkazu.
     *  
     */
    public String proved(String... parametry){
        if(parametry.length == 0){
            return "Co mám opravit??";
        }

        String jmeno = parametry[0];

        Batoh batoh = plan.getBatoh();
        Vec vec = batoh.najdiVecVMistnosti(jmeno);
        if(vec == null){
            return "Tuhle věc nemáš...";
        }
        else if (vec.getNazev().equals("pistole") && batoh.obsahujeVec("pruzina") && batoh.obsahujeVec("udernik")){
            Vec pistole = batoh.najdiVecVMistnosti("pistole");
            batoh.odeberVec("udernik");
            batoh.odeberVec("pruzina");
            pistole.rozbita(false);
            return "A pistole je funkční...";
        }
        else if (vec.getNazev().equals("pistole") && batoh.obsahujeVec("pruzina")==false && batoh.obsahujeVec("zaver")){
            return "Nemám pružinu...ještě potřebuju pruzinu...";
        }
        else if (vec.getNazev().equals("pistole") && batoh.obsahujeVec("pruzina") && batoh.obsahujeVec("zaver")== false){
            return "Nemám závěr....ještě potřebuju zaver...";
        }
        else if(vec.jeRozbita() == false){
            return "Tohle není rozbité...";
        }
        else{
            return "Nemám potřebné součástky na opravu...";
        }
    }

    /**
     *  Metoda vrací název příkazu (slovo které používá hráč pro jeho vyvolání)
     *  
     *  @ return nazev prikazu
     */
    public String getNazev(){
        return NAZEV;
    }

    //== Soukromé metody (instancí i třídy) ========================================

}
